import 'dart:io';

main() async {
  print('程序开始，执行 main 入口函数');
  print('不能堵塞的代码');

  try {
    // 等待第一个函数执行完成
    int firstData = await getFirstData();
    print('第一个函数执行完成，结果是：$firstData');

    // 等待第二个函数执行完成
    int secondData = await getSecondData();
    print('第二个函数执行完成，结果是：$secondData');

    // 等待第三个函数执行完成
    int thirdData = await getThirdData();
    print('第三个函数执行完成，结果是：$thirdData');
  } catch (e) {
    print('捕获到错误：$e');
  } finally {
    print('不管成功失败，都会执行 finally');
  }
}

// 第一个获取数据的函数
Future<int> getFirstData() {
  return Future(() {
    sleep(Duration(seconds: 2));
    // throw '第一个函数执行失败';
    return 11;
  });
}

// 第二个获取数据的函数
Future<int> getSecondData() {
  return Future(() {
    sleep(Duration(seconds: 2));
    return 22;
    // throw '第二个函数执行失败';
  });
}

// 第三个获取数据的函数
Future<int> getThirdData() {
  return Future(() {
    sleep(Duration(seconds: 2));
    return 33;
    // throw '第三个函数执行失败';
  });
}
